/* 数论
* 1.筛质数--埃式筛法 nloglogn st[]中是质数
    for(int i = 2; i <= n; i++){
        if(!st[i]) primes[cnt++] = i;
        else continue; //优化
        for(int j = 2*i; j <= n; j++)
            st[j] = true;
    }

    线性筛法
    for(int i = 2; i <= n; i++){
        if(!st[i]) primes[cnt++] = i;
        for(int j = 0; primes[j]*i <= n; j++)
        {
            st[primes[j]*i] = true;
            if(i % primes[j] == 0) break;
        }
    }

*/

#define DEBUG
#pragma GCC optimize("O1,O2,O3,Ofast")
#pragma GCC optimize("no-stack-protector,unroll-loops,fast-math,inline")
#pragma GCC target("avx,avx2,fma")
#pragma GCC target("sse,sse2,sse3,sse4,sse4.1,sse4.2,ssse3")


#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 1e6+10;
int primes[N], cnt;
bool st[N];

void init(int n)
{
        for(int i = 2; i <= n; i++){
        if(!st[i]) primes[cnt++] = i;
        else continue; //优化

        for(int j = 0; primes[j]*i <= n; j++)
        {
            st[primes[j]*i] = true;
            if(i % primes[j] == 0) break;
        }
    }
}

int main()
{
    #ifdef DEBUG
        freopen("./in.txt", "r", stdin);
    #else
        ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    #endif

    init(N-1);

    int n; cin >> n;
    for(int k = 4; k <= n; k+=2)
    {
        for(int i = 0; ; i++)
        {
            int a = primes[i];
            int b = k - a;
            if(!st[b])
            {
                printf("%d=%d+%d\n", k, a, b);
                break;
            }
        }
    }
    return 0;
}